#include"head/myhead.h"
#include"head/client.h"
#include"head/send_file.h"
//#include"head/page0.h"
//#include"head/page1.h"



//--------------------------------------------------------------------

lv_font_t *chinese_font = NULL;
 char ip[20]="";

extern int show_friend_list_flag;







//-------------------------------------------------------------------
int main(void)
{
    /*LittlevGL init*/
    lv_init();

    /*Linux frame buffer device init*/
    fbdev_init();

    /*A small buffer for LittlevGL to draw the screen's content*/
    static lv_color_t buf[DISP_BUF_SIZE];

    /*Initialize a descriptor for the buffer*/
    static lv_disp_draw_buf_t disp_buf;
    lv_disp_draw_buf_init(&disp_buf, buf, NULL, DISP_BUF_SIZE);

    /*Initialize and register a display driver*/
    static lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.draw_buf = &disp_buf;
    disp_drv.flush_cb = fbdev_flush;
    disp_drv.hor_res  = 800;
    disp_drv.ver_res  = 480;
    lv_disp_drv_register(&disp_drv);

    evdev_init();
    static lv_indev_drv_t indev_drv_1;
    lv_indev_drv_init(&indev_drv_1); /*Basic initialization*/
    indev_drv_1.type = LV_INDEV_TYPE_POINTER;

    /*This function will be called periodically (by the library) to get the mouse position and state*/
    indev_drv_1.read_cb      = evdev_read;
    lv_indev_t * mouse_indev = lv_indev_drv_register(&indev_drv_1);

    /*Set a cursor for the mouse*/
    LV_IMG_DECLARE(mouse_cursor_icon)
    lv_obj_t * cursor_obj = lv_img_create(lv_scr_act()); /*Create an image object for the cursor */
    lv_img_set_src(cursor_obj, &mouse_cursor_icon);      /*Set the image source*/
    lv_indev_set_cursor(mouse_indev, cursor_obj);        /*Connect the image  object to the driver*/
    /*------------------------------------------------------------------------------------------------------------------------------------------*/


    #if LV_USE_FREETYPE
    lv_ft_info_t ft_info;
    ft_info.name = "/font/simfang.ttf";  // 中文字体路径
    ft_info.weight = 24;                           // 字体大小
    ft_info.style = FT_FONT_STYLE_NORMAL;
    ft_info.mem = 0;
    ft_info.mem_size = 0;

    if(lv_ft_font_init(&ft_info) != LV_RES_OK) {
    printf("字体加载失败！\n");
} else {
    printf("字体加载成功！\n");
}

chinese_font = ft_info.font;   // 初始化后才有值
#endif
   //lv_example_freetype_1();
//   show_image_auto("/picture/1.bmp");





    main_page();
    client();



    /*Handle LitlevGL tasks (tickless mode)*/
    while(1) {
        lv_timer_handler();
        usleep(5000);


        // 检查是否需要刷新好友列表
    if(show_friend_list_flag) {
        show_friend_list_flag = 0;  // 重置标志
        show_friend_list(left_page);
    }

    if(send_file_flag){
        send_file_flag = 0;
        send_file();
    }



    }

    return 0;
}

/*Set in lv_conf.h as `LV_TICK_CUSTOM_SYS_TIME_EXPR`*/
uint32_t custom_tick_get(void)
{
    static uint64_t start_ms = 0;
    if(start_ms == 0) {
        struct timeval tv_start;
        gettimeofday(&tv_start, NULL);
        start_ms = (tv_start.tv_sec * 1000000 + tv_start.tv_usec) / 1000;
    }

    struct timeval tv_now;
    gettimeofday(&tv_now, NULL);
    uint64_t now_ms;
    now_ms = (tv_now.tv_sec * 1000000 + tv_now.tv_usec) / 1000;

    uint32_t time_ms = now_ms - start_ms;
    return time_ms;
}
